export default {
  data() {
    return {
      // 表格动态高度
      tableHeight: 608,
      // 提交表单--节流
      lastTimestamp: 0,
      // 图片公共预览参数
      visible: false,
      previewImage: "",
      defaultProfile: require("@/assets/images/default-profile.png")
    };
  },
  // 更新数据的时候，重新排列表格
  updated() {
    if (this.$refs.table && this.$refs.table.doLayout) {
      this.$refs.table.doLayout();
    }
  },
  methods: {
    // 获取表格动态高度
    getTableHeight() {
      const setHeight = () => {
        // 计算搜索区域高度
        const queryHeight = this.$refs.nxIB?.$el?.clientHeight + 185;
        // 动态赋值表格高度
        this.tableHeight = document.body.clientHeight - queryHeight;
      }
      this.$nextTick(() => {
        setHeight();
      });
      // 窗口改变的时候动态赋值高度
      window.onresize = setHeight
    },
    // 图片预览公共方法
    onPreview(previewImage) {
      this.previewImage = previewImage
      this.visible = true
    },
    /**
     * 处理数字精度
     * e 输入框的值
     * num 保留的小数位数
     * len 保留的整数位数
     */
    filtersPrecision(e, num = 2, len = 8, min = undefined, max = undefined) {
      try {
        // 求小数位个数
        function countDecimal(str) {
          var decimalCount = (str.match(/\.\d+/g) || [])
            .map(function (val) {
              return val.length - 1;
            })
            .reduce(function (a, b) {
              return Math.max(a, b);
            }, 0);
          return decimalCount;
        }

        let val = e.toString();
        const length = countDecimal(val);
        if (length < num) {
          num = length;
        }
        if (val === undefined || val === null) return;
        if (min !== undefined && val < min) val = min;
        if (max !== undefined && val > max) val = max;

        const valStr = val.toString();
        if (!valStr) return "";

        let [integer, decimal] = valStr.split(".");
        if (!integer && !decimal) return "";
        if (!integer) integer = "0";
        if (!decimal) decimal = "0";

        integer = integer.slice(0, len) || "0";
        decimal = decimal.slice(0, num) || "0";

        return num ? Number(`${integer}.${decimal}`).toFixed(num) : integer;
      } catch (error) {}
    },
    /**
     * 轮播图数据转换
     * @param {arr} list 图片数组
     * @param {number} type 类型：0首页 1商品 2清洁服务 3积分商品 4搬运服务 5合作伙伴
     * @param {number} status 状态：0启用 1停用 没有不管
     * @param {String} name 轮播图名称 没有不管
     */
    bannerArrChange(list, type, status = null, name = null) {
      const newArr = [];
      list.forEach((val) => {
        const obj = {
          type,
          image: val,
        };
        if (status) obj.status = status;
        if (name) obj.name = name;
        newArr.push(obj);
      });
      return newArr;
    },
    /**
     * 节流处理（time秒内点击只有一次生效，点击提交按钮可用）
     * @param time 毫秒
     */
    throttle(time = 2000) {
      const nowTime = new Date().getTime();
      const lastTime = this.lastTimestamp;
      if (nowTime - lastTime > time) {
        this.lastTimestamp = nowTime;
        return true;
      }
      return false;
    },
    /**
     * 深拷贝
     * @param obj 要拷贝的对象或数组
     */
    deepCopy(obj) {
      // 如果obj是null或不是对象/数组，直接返回该值
      if (obj === null || typeof obj !== "object") return obj;

      // 根据obj的类型创建新对象/数组
      const newObj = Array.isArray(obj) ? [] : {};

      // 遍历obj的所有属性/元素，递归调用deepCopy方法进行深拷贝
      for (let key in obj) {
        newObj[key] = this.deepCopy(obj[key]);
      }

      return newObj;
    },
    /**
     * 获取当前日期
     */
    getDateTime() {
      // 获取当前日期
      let timestamp = Date.parse(new Date());
      let date = new Date(timestamp);
      date.setDate(date.getDate());
      //获取年份
      var Y = date.getFullYear();
      //获取月份
      var M =
        date.getMonth() + 1 < 10
          ? "0" + (date.getMonth() + 1)
          : date.getMonth() + 1;
      //获取当日日期
      var D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
      let todayDate = Y + "-" + M + "-" + D;
      return todayDate;
    },
  }
};
